一、前言:
當玩家在遊戲中途有事不得不放棄進度時,一定要能安全地返回主選單(Main Menu)並退出遊戲。下一次開啟遊戲時用【DAY17】所創的存檔點接續進行進度。今天我們要專注實作返回主選單的核心機制,特別是處理切換場景時最容易踩坑的「時間軸凍結殘留與全域旗標重設」!
二、 返回主選單的需求與防呆挑戰
當玩家點擊「返回主選單」按鈕時,程式必須依序處理以下幾個關鍵步驟:
三、 核心程式實作:PauseMenuController 中的返回邏輯
我們直接延續昨日實作的 PauseMenuController.cs 基礎架構。在昨天的暫停與恢復邏輯之上,今天我們要在同一個檔案中新增一個關鍵功能——讓玩家在遊戲中途可以安全地返回主選單,同時加上時間軸與全域旗標的防呆重設:
public class PauseMenuController : MonoBehaviour {
// ... 前面 DAY20 實作的暫停與恢復邏輯省略 ...
// DAY21 新增:返回主選單與時間軸防呆核心
public void GoToMainMenu() {
Time.timeScale = 1f; // 離開前務必恢復時間軸,防止下個場景卡死!
IsGamePaused = false; // 重設暫停旗標
SceneManager.LoadScene("SampleScene"); // 載入主選單場景
}
}
關鍵程式碼解析:
四、 Unity Inspector 設定與實測驗收
1. 腳本掛載: 確保 PauseMenuController 已經掛載在遊戲中的常駐或管理物件上。
2. 按鈕事件串接:


圖二、UI成果示意圖
3. 跨場景返回實測: 在遊戲中實際執行時,點擊暫停選單中的返回按鈕,時間軸會成功被重設為 1f,畫面流暢切回主選單場景,且完全沒有發生卡死或背景對話殘留的現象。
五、 開發實戰經驗:避開專案打包後的經典雷點
六、 今日成果與小結
今天的內容主要是實作「返回主選單的核心機制」,並透過處理 Time.timeScale = 1f 與 IsGamePaused = false 來防止場景切換卡死,這與前幾天的暫停選單(PauseMenuController)和跨場景常駐管理(PersistentManagers)是緊密相連的,因此是屬於同個分支--feature/persistent-managers。
1.檢查修改狀態
git status
2.加入暫存區並提交 Commit
git add .
git commit -m "feat: 實作 GoToMainMenu 返回主選單機制,並加入時間軸防呆與靜態旗標重設以防範場景卡死"
3.推送到遠端分支
git push origin feature/persistent-managers